﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Thêm thư viện
using KaraokeManagementDTO;
using System.Data.OleDb;
using System.Data;

namespace KaraokeManagementDAO
{
    public class KhachHangDAO:DataProvider
    {
        public Boolean themKhachHang(KhachHangDTO dto)
        {
            List<OleDbParameter> para = new List<OleDbParameter>();

            //Câu truy vấn thêm dữ liệu
            String query = "insert into KhachHang(HoTen,DiaChi,GioiTinh,SoDienThoai,SoCMND,LoaiKhachHang_ID,NgaySinh) values(@HoTen,@DiaChi,@GioiTinh,@SoDienThoai,@SoCMND,@LoaiKhachHang_ID,@NgaySinh)";
       
            para.Add(new OleDbParameter("@HoTen", dto.HoTen));
            para.Add(new OleDbParameter("@DiaChi", dto.DiaChi));
            para.Add(new OleDbParameter("@GioiTinh", dto.GioiTinh));
            para.Add(new OleDbParameter("@SoDienThoai", dto.SoDienThoai));
            para.Add(new OleDbParameter("@SoCMND", dto.SoCMND));
            para.Add(new OleDbParameter("@LoaiKhachHang_ID", dto.LoaiKhachHang_ID));
            para.Add(new OleDbParameter("@NgaySinh", dto.NgaySinh));

            if (ExecuteNoneQuery(query, para) < 0)
            {
                return false;
            }

            return true;
        }

        public Boolean xoaKhachHang(int MaKhachHang)
        {
            List<OleDbParameter> para = new List<OleDbParameter>();

            //Câu truy vấn xóa dữ liệu
            String query = "delete from KhachHang where ID=@MaKhachHang";
            para.Add(new OleDbParameter("@ID", MaKhachHang));

            if (ExecuteNoneQuery(query, para) < 0)
            {
                return false;
            }

            return true;
        }

        public Boolean capNhatKhachHang(KhachHangDTO dto)
        {
            List<OleDbParameter> para = new List<OleDbParameter>();

            //Câu truy vấn cập nhật dữ liệu
            String query = "update KhachHang set HoTen=@HoTen,DiaChi=@DiaChi,GioiTinh=@GioiTinh,SoDienThoai=@SoDienThoai,SoCMND=@SoCMND,LoaiKhachHang_ID=@LoaiKhachHang_ID, NgaySinh=@NgaySinh where ID=@ID";
            
            para.Add(new OleDbParameter("@HoTen", dto.HoTen));
            para.Add(new OleDbParameter("@DiaChi", dto.DiaChi));
            para.Add(new OleDbParameter("@GioiTinh", dto.GioiTinh));
            para.Add(new OleDbParameter("@SoDienThoai", dto.SoDienThoai));
            para.Add(new OleDbParameter("@SoCMND", dto.SoCMND));
            para.Add(new OleDbParameter("@LoaiKhachHang_ID", dto.LoaiKhachHang_ID));
            para.Add(new OleDbParameter("@NgaySinh", dto.NgaySinh));
            para.Add(new OleDbParameter("@ID", dto.ID));
            

            if (ExecuteNoneQuery(query, para) < 0)
            {
                return false;
            }

            return true;
        }

        public KhachHangDTO layThongTinKhachHang(int MaKhachHang)
        {
            KhachHangDTO kh = new KhachHangDTO();

            List<OleDbParameter> para = new List<OleDbParameter>();

            //Câu truy vấn lấy dữ liệu
            String query = "select * from KhachHang where ID=@MaKhachHang";
            para.Add(new OleDbParameter("@MaKhachHang",MaKhachHang));

            //DataTable
            DataTable dt = new DataTable();
            dt = ExecuteQuery(query, para);

            if (dt.Rows.Count == 0)
                return null;

            DataRow row = dt.Rows[0];

            kh.ID = int.Parse(row["ID"].ToString());
            kh.HoTen = row["HoTen"].ToString();
            kh.DiaChi = row["DiaChi"].ToString();
            kh.GioiTinh = row["GioiTinh"].ToString();
            kh.SoDienThoai = row["SoDienThoai"].ToString();
            kh.SoCMND = row["SoCMND"].ToString();
            kh.LoaiKhachHang_ID = int.Parse(row["LoaiKhachHang_ID"].ToString());
            kh.NgaySinh = DateTime.Parse(row["NgaySinh"].ToString());

            return kh;
        }

        public List<KhachHangDTO> layDanhSachKhachHang()
        {
            List<KhachHangDTO> listKhachHang = new List<KhachHangDTO>();

            List<OleDbParameter> para = new List<OleDbParameter>();

            //Câu truy vấn lấy dữ liệu
            String query = "select * from KhachHang";


            //DataTable
            DataTable dt = new DataTable();
            dt = ExecuteQuery(query, para);

            if (dt.Rows.Count == 0)
                return null;

            foreach (DataRow row in dt.Rows)
            {
                KhachHangDTO dto = new KhachHangDTO();

                dto.ID = int.Parse(row["ID"].ToString());
                dto.HoTen = row["HoTen"].ToString();
                dto.DiaChi = row["DiaChi"].ToString();
                dto.GioiTinh = row["GioiTinh"].ToString();
                dto.SoDienThoai = row["SoDienThoai"].ToString();
                dto.SoCMND = row["SoCMND"].ToString();
                dto.LoaiKhachHang_ID = int.Parse(row["LoaiKhachHang_ID"].ToString());
                dto.NgaySinh = DateTime.Parse(row["NgaySinh"].ToString());
                
                listKhachHang.Add(dto);
            }

            return listKhachHang;
        }

        public int layMaKhachHangMoiNhat()
        {
            List<OleDbParameter> para = new List<OleDbParameter>();

            //Câu truy vấn lấy dữ liệu
            String query = "select max(ID) from KhachHang";


            //DataTable
            object obj = new object();
            obj = ExecuteScalar(query, para);

            if (obj==null)
                return -1;

            return int.Parse(obj.ToString());
        }
    }
}
